package 算法基础模板.chapter_01;

/**
 * 一、位运算
 * 求n的二进制表示中 的第k位是几  n >> k & 1
 * 即
 * 1. 先把第k位移到最后一位 x = n >> k
 * 2. 看看个位是几  x & 1
 *
 * 二、lowbit操作
 * 返回x的最后一位1
 *
 * x = 1010  -> lowbit(x) = 10
 * x = 101000  ->  lowbit(x) = 1000
 * @author Summerday
 */
public class BitOptionT {

    public static void main(String[] args) {

        int n = 10;

        for(int k = 3; k >= 0; k --) {
            System.out.print(n >> k & 1);
        }
        System.out.println();

        System.out.println(lowbit(n));

    }

    static int lowbit(int x){
        return -x & x;
    }

}
